(Fexpand_file_name): Copy argument `name' into local storage on all platforms,
authorEli Zaretskii <eliz@gnu.org>
Fri, 29 Aug 2008 10:07:15 +0000 (10:07 +0000)
committerEli Zaretskii <eliz@gnu.org>
Fri, 29 Aug 2008 10:07:15 +0000 (10:07 +0000)
not just on DOS_NT.

src/fileio.c

index 81836bd82139f73d16b2fb5c3432ab649a03fc1f..d925543c8d1a3a322e0d5ddf7b335994d4354195 100644 (file)
@@ -1149,11 +1149,10 @@ See also the function `substitute-in-file-name'.  */)
   nm = SDATA (name);
   multibyte = STRING_MULTIBYTE (name);
 
-#ifdef DOS_NT
-  /* We will force directory separators to be either all \ or /, so make
-     a local copy to modify, even if there ends up being no change. */
+  /* Make a local copy of nm[] to protect it from GC in DECODE_FILE below. */
   nm = strcpy (alloca (strlen (nm) + 1), nm);
 
+#ifdef DOS_NT
   /* Note if special escape prefix is present, but remove for now.  */
   if (nm[0] == '/' && nm[1] == ':')
     {
@@ -1340,7 +1339,7 @@ See also the function `substitute-in-file-name'.  */)
            }
          return name;
 #else /* not DOS_NT */
-         if (nm == SDATA (name))
+         if (strcmp (nm, SDATA (name)) == 0)
            return name;
          return make_specified_string (nm, -1, strlen (nm), multibyte);
 #endif /* not DOS_NT */